All computer operating systems utilise memory systems for the storage and manipulation of data. During usage it typically occurs that portions of memory contain data which is no longer required. The system needs to be made aware that these memory portions have become available for further use. In one sense it can be said that these memory portions now contain "garbage" and there is a requirement to collect the "garbage" so as to free up the memory resources for further system-use.
In an "object oriented" form of computer system the system can be thought of as producing and using objects, the "objects" being data objects having data fields which either contain data values or pointers to objects.
FIG. 1 illustrates a generalised object oriented system 301 containing a first data object 302 and a second data object 303. The first data object 302 comprises a single data record having a number of different data fields, one of which is a pointer field 304 containing data which points to (that is, contains the memory location of) a data field 305 containing numbers in second data object 303.
In such a system memory resources can become unavailable where, for example, data objects come to point back to each other forming an island 306.
In order to get rid of this "garbage" thereby to free unused system resources most systems use some form of garbage collection.
Two commonly used current forms are "reference counting" and "mark/sweep".
Problems with current systems include inability to locate islands, a requirement that the operating system suspend processing while garbage is being collected and a general inability to consistently and comprehensively first identify and then remove unwanted or unused data objects (garbage).
It is an object of the present invention, in at least some preferred embodiments, to address or ameliorate one or more of the abovementioned problems.